/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package entidades;

import java.io.Serializable;
import java.sql.Timestamp;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Version;

/**
 *
 * @author Felipe
 */
@Entity
@Table (name = "COMERCIOS")
public class Comercio implements Serializable
{
    @Id
    @Column (name = "ID_COMERCIO")
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    private long id;
    
    /**
     * Domicilio del comercio.
     */
    @OneToOne
    @JoinColumn (name = "DOMICILIO")
    private Domicilio domicilio;
    /**
     * Contacto del comercio en si.
     */
    @OneToOne
    @JoinColumn (name = "CONTACTO_LOCAL")
    private Contacto local;
    /**
     * Contacto de la persona encargada.
     */
    @OneToOne
    @JoinColumn (name = "CONTACTO_ENCARGADO")
    private Contacto contacto;
    /**
     * Identificacion del representante/dueño.
     */
    @ManyToOne
    @JoinColumn (name = "IDENTIFICACION_REPRESENTANTE")
    private Identificacion representante;
    /**
     * Identificacion de la persona encargada.
     */
    @ManyToOne
    @JoinColumn (name = "IDENTIFICACION_ENCARGADO")
    private Identificacion datosContacto;
    
    @Lob
    @Column (name = "IMAGEN")
    @Basic (fetch = FetchType.LAZY)
    private byte[] logo;
    
    @Version
    private Timestamp version;
    
    public Comercio ()
    {
        
    }

    public Comercio(Domicilio domicilio, Contacto local, Contacto contacto, Identificacion representante, Identificacion datosContacto)
    {
        this.domicilio = domicilio;
        this.local = local;
        this.contacto = contacto;
        this.representante = representante;
        this.datosContacto = datosContacto;
    }

    public long getId()
    {
        return id;
    }

    public void setId(long id)
    {
        this.id = id;
    }

    public Domicilio getDomicilio()
    {
        return domicilio;
    }

    public void setDomicilio(Domicilio domicilio)
    {
        this.domicilio = domicilio;
    }

    public Contacto getLocal()
    {
        return local;
    }

    public void setLocal(Contacto local)
    {
        this.local = local;
    }

    public Contacto getContacto()
    {
        return contacto;
    }

    public void setContacto(Contacto contacto)
    {
        this.contacto = contacto;
    }

    public Identificacion getRepresentante()
    {
        return representante;
    }

    public void setRepresentante(Identificacion representante)
    {
        this.representante = representante;
    }

    public Identificacion getDatosContacto()
    {
        return datosContacto;
    }

    public void setDatosContacto(Identificacion datosContacto)
    {
        this.datosContacto = datosContacto;
    }

    public byte[] getLogo()
    {
        return logo;
    }

    public void setLogo(byte[] logo)
    {
        this.logo = logo;
    }
}
